package models

import "blog_go/models/ctype"

// 文章表
type ArticleModel struct {
	MODEL
	Title         string `gorm:"size:32"`  // 文章标题
	Abstract      string `gorm:"size:256"` // 文章简介
	Content       string // 文章内容 默认longtext
	LookCount     int    `gorm:"default:0"` // 浏览量 默认bigint(20) unsigned
	CommentCount  int    `gorm:"default:0"` // 评论量
	DiggCount     int    `gorm:"default:0"` // 点赞量
	CollectsCount int    `gorm:"default:0"` // 收藏量
	Category      string `gorm:"size:20"`   // 文章分类
	Source        string `gorm:"size:256"`  // 文章来源
	Link          string `gorm:"size:256"`  // 原文链接
	ImageID       uint   // 文章封面id
	// 冗余字段
	Tags      ctype.Array `gorm:"type:string;size:256"` // 文章标签
	UserID    uint        // 用户id
	NickName  string      `gorm:"size:42"`  // 发布文章的用户昵称
	ImagePath string      `gorm:"size:256"` // 文章的封面
	// 以下不是属于表结构的
	TagModels     []TagModel     `gorm:"many2many:article2_tag;joinForeignKey:ArticleID;JoinReferences:TagID"` // 文章标签
	CommentModels []CommentModel `gorm:"foreignKey:ArticleID"`                                                 // 文章评论列表
	UserModel     UserModel      `gorm:"foreignKey:UserID"`                                                    // 文章作者
	Image         ImageModel     `gorm:"foreignKey:ImageID"`                                                   // 文章封面 这里关联的是ArticleModel结构下的ImageID字段
}

func (ArticleModel) TableName() string {
	return "article"
}
